﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using System.IO;
using System.Data.SqlClient;
using BussinesCosea;

public partial class incidencias : System.Web.UI.Page
{
    private static AppSettingsReader settings = new AppSettingsReader();
    string cadena = (string)settings.GetValue("Conexion2", typeof(string));
    private static int folio = 0;
    private static BussinesCosea.Empleado emp = new BussinesCosea.Empleado();
    string fechaP;
    bool resul = false;
    DateTime fe = DateTime.Now;

    protected void Page_Load(object sender, EventArgs e)
    {
        folio = int.Parse(this.Request.QueryString["id"]);
        HiddenField1.Value = this.Request.QueryString["id"];

        if (this.IsPostBack == false)
        {
            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {
                emp = c.BuscaEmpleado(folio);
            }
            CargaCombos();
            cargaDatos();
            cargaGridIncapacidades();
            cargaGridAusencias();
            cargaGridRetardos();
            cargaGridBajas();
            cargaGridVaca();
            cargaGridMate();
            cargaGridSalario();
            cargaGridPuestos();
            cargaGridCurso();
            cargaGridReconocimiento();
            cargaExpediente();
        }
    }

    private void cargaExpediente()
    {
        Documentacion_0.Checked = emp.Fotos.Value;
        Documentacion_1.Checked = emp.Domicilio.Value;
        Documentacion_2.Checked = emp.Estudios.Value;
        Documentacion_3.Checked = emp.Ife.Value;
        Documentacion_4.Checked = emp.Imss.Value;
        Documentacion_5.Checked = emp.Acta.Value;
        Documentacion_6.Checked = emp.Recomendacion.Value;
        Documentacion_7.Checked = emp.Policia.Value;
        Documentacion_8.Checked = emp.Curp.Value;
        //cargaImagenes();
    }

    private void cargaImagenes()
    {
        if (Documentacion_0.Checked == true)
            Image2.ImageUrl = "~/MuestraImagenEmpleados.ashx?id=" + emp.IdEmpleado.ToString() + "&campo=Fotos";
        if (Documentacion_1.Checked == true)
            Image3.ImageUrl = "~/MuestraImagenEmpleados.ashx?id=" + emp.IdEmpleado.ToString() + "&campo=Domicilio";
        if (Documentacion_2.Checked == true)
            Image4.ImageUrl = "~/MuestraImagenEmpleados.ashx?id=" + emp.IdEmpleado.ToString() + "&campo=Estudios";
        if (Documentacion_3.Checked == true)
            Image5.ImageUrl = "~/MuestraImagenEmpleados.ashx?id=" + emp.IdEmpleado.ToString() + "&campo=Ife";
        if (Documentacion_4.Checked == true)
            Image6.ImageUrl = "~/MuestraImagenEmpleados.ashx?id=" + emp.IdEmpleado.ToString() + "&campo=Imss";
        if (Documentacion_5.Checked == true)
            Image7.ImageUrl = "~/MuestraImagenEmpleados.ashx?id=" + emp.IdEmpleado.ToString() + "&campo=Acta";
        if (Documentacion_6.Checked == true)
            Image8.ImageUrl = "~/MuestraImagenEmpleados.ashx?id=" + emp.IdEmpleado.ToString() + "&campo=Recomendacion";
        if (Documentacion_7.Checked == true)
            Image9.ImageUrl = "~/MuestraImagenEmpleados.ashx?id=" + emp.IdEmpleado.ToString() + "&campo=Policia";
        if (Documentacion_8.Checked == true)
            Image10.ImageUrl = "~/MuestraImagenEmpleados.ashx?id=" + emp.IdEmpleado.ToString() + "&campo=Curp";

    }

    private void cargaDatos()
    {

        txtNumEmp.Text = emp.NumeroEmpleado;
        txtNumEmp1.Text = emp.NumeroEmpleado;
        txtNumEmp2.Text = emp.NumeroEmpleado;
        txtNumEmp3.Text = emp.NumeroEmpleado;
        txtNumEmp4.Text = emp.NumeroEmpleado;
        txtNumEmp5.Text = emp.NumeroEmpleado;
        txtNumEmp6.Text = emp.NumeroEmpleado;
        txtNumEmp7.Text = emp.NumeroEmpleado;
        txtNumEmp8.Text = emp.NumeroEmpleado;
        txtNumEmp9.Text = emp.NumeroEmpleado;
        txtNumEmp10.Text = emp.NumeroEmpleado;

        txtNombre.Text = emp.SolicitudEmpleo.Nombre1 + " " + emp.SolicitudEmpleo.Nombre2;
        txtPaterno.Text = emp.SolicitudEmpleo.Paterno;
        txtMaterno.Text = emp.SolicitudEmpleo.Materno;
        EstadoEmpleado.Text = emp.IdEstadoEmpleado.ToString();
        txtFechaNacimiento.Text = emp.SolicitudEmpleo.FechaNacimiento.Value.ToShortDateString();
        txtSexo.Text = emp.SolicitudEmpleo.Sexo;
        txtImss.Text = emp.SolicitudEmpleo.Imss;
        txtCurp.Text = emp.SolicitudEmpleo.Curp;
        txtRFC.Text = emp.SolicitudEmpleo.RFC;
        txtDireccion1.Text = emp.SolicitudEmpleo.Domicilio;
        txtCiudad.Text = emp.SolicitudEmpleo.LugarNacimiento;
        txtEstado.Text = emp.SolicitudEmpleo.EstadoDondeVive;
        txtCP.Text = emp.SolicitudEmpleo.CodigoPostal;
        txtTelefono.Text = emp.SolicitudEmpleo.Telefono;
        txtTelefonoCasa.Text = emp.SolicitudEmpleo.Telefono2;
        txtEmail.Text = emp.SolicitudEmpleo.Email;
        Image1.ImageUrl = "~/ShowImage.ashx?id=" + emp.SolicitudEmpleo.IdSolicitud;
        txtDireccion2.Text = "*";
        txtDireccion3.Text = "*";

        EmpleadoComplemento eComp;
        using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
        { eComp = c.ObtenEmpleadoComplemento(folio); }
        if (eComp != null)
        {
            txtContratado.Text = eComp.Contrato;
            txtSeniorDate.Text = eComp.SendioDate.Value.ToShortDateString();
            txtPlanta.Text = eComp.Planta;
            txtPlantaEfectiva.Text = eComp.PlantaEfectiva;
            txtDepartamento.Text = eComp.Departamento;
            txtSupervisor.Text = eComp.Supervisor;
            txtDepto.Text = eComp.Depto;
            txtLocalizacion.Text = eComp.Localizacion;
            txtLabor.Text = eComp.Labor;
            txtSalarioHora.Text = eComp.SalarioHora.ToString();
            txtSalarioMensual.Text = eComp.SalarioMensual.ToString();
            txtRazonSalario.Text = eComp.RazonSalario;
            txtHoraSemana.Text = eComp.HoraSemana.ToString();
            txtSalarioEfectivo.Text = eComp.SalarioEfectivo.ToString();
            txtCodigoTrabajo.Text = eComp.CodigoTrabajo;
            txtCodigoEstacionTra.Text = eComp.CodigoEstacionTrabajo;
            txtSalario.Text = eComp.Salario.ToString();
            txtCodigoDepto.Text = eComp.CodigoDepto;
            txtPayrollNumber.Text = eComp.PayRoll;
            txtCodigoProyecto.Text = eComp.CodigoProyecto;
            txtTurno.Text = eComp.Turno;
            txtJobPosition.Text = eComp.JobPosition;
            txtJobPosCodEfe.Text = eComp.JobPosCodeEfe;
            txtPais.Text = eComp.Pais;
        }
        else
        {
            txtContratado.Text = "*pendiente";
            txtSeniorDate.Text = DateTime.Now.ToShortDateString();
            txtPlanta.Text = "*pendiente";
            txtPlantaEfectiva.Text = "*pendiente";
            txtDepartamento.Text = "*pendiente";
            txtSupervisor.Text = "*pendiente";
            txtDepto.Text = "*pendiente";
            txtLocalizacion.Text = "*pendiente";
            txtLabor.Text = "*pendiente";
            txtSalarioHora.Text = "0.0";
            txtSalarioMensual.Text = "0.0";
            txtRazonSalario.Text = "*pendiente";
            txtHoraSemana.Text = "0.0";
            txtSalarioEfectivo.Text = "*pendiente";
            txtCodigoTrabajo.Text = "*pendiente";
            txtCodigoEstacionTra.Text = "*pendiente";
            txtSalario.Text = "0.0";
            txtCodigoDepto.Text = "*pendiente";
            txtPayrollNumber.Text = "*pendiente";
            txtCodigoProyecto.Text = "*pendiente";
            txtTurno.Text = "*pendiente";
            txtJobPosition.Text = "*pendiente";
            txtJobPosCodEfe.Text = "*pendiente";
            txtPais.Text = "México";
        }

    }
    
    protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
    {

    }
    protected void ImageButton2_Click(object sender, ImageClickEventArgs e)
    {

    }

    private void CargaCombos()
    {
        try
        {
            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {
                EstadoEmpleado.DataSource = c.ObtenEstadoEmpleado();
                EstadoEmpleado.DataTextField = "Estado";
                EstadoEmpleado.DataValueField = "IdEstadoEmpleado";
                EstadoEmpleado.DataBind();

                ddRazon.DataSource = c.ObtenRazonesEmpleado();
                ddRazon.DataTextField = "Descripcion";
                ddRazon.DataValueField = "IdRazon";
                ddRazon.DataBind();

                ddTipo.DataSource = c.ObtenTipoIncapacidades();
                ddTipo.DataTextField = "Descripcion";
                ddTipo.DataValueField = "IdTipoIncapacidad";
                ddTipo.DataBind();
                
                ddCaso.DataSource = c.ObtenCasosEmpleado();
                ddCaso.DataTextField = "Descripcion";
                ddCaso.DataValueField = "IdCaso";
                ddCaso.DataBind();

                ddCausaBaja.DataSource = c.ObtenBajasEmpleado();
                ddCausaBaja.DataTextField = "Descripcion";
                ddCausaBaja.DataValueField = "IdBaja";
                ddCausaBaja.DataBind();

                ddMateriales.DataSource = c.ObtenMateriale();
                ddMateriales.DataTextField = "Descripcion";
                ddMateriales.DataValueField = "IdMaterial";
                ddMateriales.DataBind();


                for (int i = 1930; i <= DateTime.Now.Year; i++)
                {
                    txtAnoAusIni.Items.Add(i.ToString());
                    txtAnoAusFin.Items.Add(i.ToString());
                    txtAnoCapaFin.Items.Add(i.ToString());
                    txtAnoCapaIni.Items.Add(i.ToString());
                    txtAnoDev.Items.Add(i.ToString());
                    txtAnoEnt.Items.Add(i.ToString());
                    txtAnoInc.Items.Add(i.ToString());
                    txtAnoIncaFin.Items.Add(i.ToString());
                    txtAnoIncaIni.Items.Add(i.ToString());
                    txtAnoReco.Items.Add(i.ToString());
                    txtAnoRet.Items.Add(i.ToString());
                    txtAnoVacaFin.Items.Add(i.ToString());
                    txtAnoVacaIni.Items.Add(i.ToString());
                    txtAnoVig.Items.Add(i.ToString());
                    txtAnoBajaIni.Items.Add(i.ToString());
                    txtAnoBajaFin.Items.Add(i.ToString());                    
                }


                for (int i = 1; i <= 31; i++)
                {
                    if (i < 10)
                    {
                        txtDiaAusIni.Items.Add("0" + i.ToString());
                        txtDiaAusFin.Items.Add("0" + i.ToString());
                        txtDiaCapaFin.Items.Add("0" + i.ToString());
                        txtDiaCapaIni.Items.Add("0" + i.ToString());
                        txtDiaDev.Items.Add("0" + i.ToString());
                        txtDiaEnt.Items.Add("0" + i.ToString());
                        txtDiaInc.Items.Add("0" + i.ToString());
                        txtDiaIncaFin.Items.Add("0" + i.ToString());
                        txtDiaIncaIni.Items.Add("0" + i.ToString());
                        txtDiaReco.Items.Add("0" + i.ToString());
                        txtDiaRet.Items.Add("0" + i.ToString());
                        txtDiaVacaFin.Items.Add("0" + i.ToString());
                        txtDiaVacaIni.Items.Add("0" + i.ToString());
                        txtDiaVig.Items.Add("0" + i.ToString());
                        txtDiaBajaIni.Items.Add("0" + i.ToString());
                        txtDiaBajaFin.Items.Add("0" + i.ToString());
                    }
                    else
                    {
                        txtDiaAusIni.Items.Add(i.ToString());
                        txtDiaAusFin.Items.Add(i.ToString());
                        txtDiaCapaFin.Items.Add(i.ToString());
                        txtDiaCapaIni.Items.Add(i.ToString());
                        txtDiaDev.Items.Add(i.ToString());
                        txtDiaEnt.Items.Add(i.ToString());
                        txtDiaInc.Items.Add(i.ToString());
                        txtDiaIncaFin.Items.Add(i.ToString());
                        txtDiaIncaIni.Items.Add(i.ToString());
                        txtDiaReco.Items.Add(i.ToString());
                        txtDiaRet.Items.Add(i.ToString());
                        txtDiaVacaFin.Items.Add(i.ToString());
                        txtDiaVacaIni.Items.Add(i.ToString());
                        txtDiaVig.Items.Add(i.ToString());
                        txtDiaBajaIni.Items.Add(i.ToString());
                        txtDiaBajaFin.Items.Add(i.ToString());
                    }
                }
                
            }

            
        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
            //throw;
        }
    }

    protected void btnActualizar_Click(object sender, EventArgs e)
    {
        try
        {

            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {

                string paso = txtNumEmp.Text;
                c.ModificaEstadoEmpleado(emp.IdEmpleado, int.Parse(EstadoEmpleado.SelectedItem.Value),txtNumEmp.Text);
                c.ActualizaDatosEmpleadoComplemento(emp.IdEmpleado,RecuperaDatosComplemento());
                lblMensaje.Text = "Empleado Actualizado";                
                txtNumEmp1.Text = txtNumEmp.Text;
                txtNumEmp2.Text = txtNumEmp.Text;
                txtNumEmp3.Text = txtNumEmp.Text;
                txtNumEmp4.Text = txtNumEmp.Text;
                txtNumEmp5.Text = txtNumEmp.Text;
                txtNumEmp6.Text = txtNumEmp.Text;
                txtNumEmp7.Text = txtNumEmp.Text;
                txtNumEmp8.Text = txtNumEmp.Text;
                txtNumEmp9.Text = txtNumEmp.Text;
                txtNumEmp10.Text = txtNumEmp.Text;
            }
        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);            
        }

    }

    private EmpleadoComplemento RecuperaDatosComplemento()
    {
        EmpleadoComplemento eCom = new EmpleadoComplemento();
        decimal dValor = 0m;

        eCom.Contrato = txtContratado.Text;
        eCom.SendioDate = DateTime.Parse(txtSeniorDate.Text);
        eCom.Planta = txtPlanta.Text;
        eCom.PlantaEfectiva = txtPlantaEfectiva.Text;
        eCom.Departamento = txtDepartamento.Text;
        eCom.Supervisor = txtSupervisor.Text;
        eCom.Depto = txtDepto.Text;
        eCom.Localizacion = txtLocalizacion.Text;
        eCom.Labor = txtLabor.Text;        
        decimal.TryParse(txtSalarioHora.Text, out dValor);
        eCom.SalarioHora = dValor;
        decimal.TryParse(txtSalarioMensual.Text, out dValor);
        eCom.SalarioMensual = dValor;
        eCom.RazonSalario = txtRazonSalario.Text;
        decimal.TryParse(txtHoraSemana.Text, out dValor);
        eCom.HoraSemana = dValor;
        decimal.TryParse(txtSalarioEfectivo.Text, out dValor);
        eCom.SalarioEfectivo = dValor;
        eCom.CodigoTrabajo = txtCodigoTrabajo.Text;
        eCom.CodigoEstacionTrabajo = txtCodigoEstacionTra.Text;
        decimal.TryParse(txtSalario.Text, out dValor);
        eCom.Salario = dValor;
        eCom.CodigoDepto = txtCodigoDepto.Text;
        eCom.PayRoll = txtPayrollNumber.Text;
        eCom.CodigoProyecto = txtCodigoProyecto.Text;
        eCom.Turno = txtTurno.Text;
        eCom.JobPosition = txtJobPosition.Text;
        eCom.JobPosCodeEfe = txtJobPosCodEfe.Text;
        eCom.Pais = txtPais.Text;
        return eCom;
    }

    protected void btnRegAusencias_Click(object sender, EventArgs e)
    {
        try
        {
            AusenciaEmpleado ause = new AusenciaEmpleado();

            fechaP = txtAnoAusIni.Text.Trim() + "/" +
            txtMesAusIni.Text.Trim() + "/" + txtDiaAusIni.Text.Trim();


            resul = DateTime.TryParse(fechaP, out fe);
            if (resul)
                ause.Desde = fe;
            else
                ause.Desde = DateTime.Now;

            fechaP = txtAnoAusFin.Text.Trim() + "/" +
            txtMesAusFin.Text.Trim() + "/" + txtDiaAusFin.Text.Trim();

            resul = DateTime.TryParse(fechaP, out fe);
            if (resul)
                ause.Hasta = fe;
            else
                ause.Hasta = DateTime.Now;


            TimeSpan? tDias = ause.Desde - ause.Hasta;

            ause.Comentario = txtComentarioAusencia.Text;
            ause.Dias = tDias.Value.Days;
            ause.IdRazon = int.Parse(ddRazon.SelectedItem.Value);
            ause.IdEmpleado = folio;
            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {
                c.AgregaAusencia(ause);
            }
            cargaGridAusencias();


        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
        }

        finally
        {
            txtDias.Text = string.Empty;
            txtComentarioAusencia.Text = string.Empty;
        }
    }

    private void cargaGridAusencias()
    {
        try
        {
            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {
                grdDatos.DataSource = c.ObtenAusencias(folio);
                grdDatos.DataBind();
            }

        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
        }
    }

    private void cargaGridRetardos()
    {
        try
        {
            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {
                grdDatos1.DataSource = c.ObtenRetardos(folio);
                grdDatos1.DataBind();
            }

        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
        }
    }

    private void cargaGridIncapacidades()
    {
        try
        {
            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {
                grdDatos2.DataSource = c.ObtenIncapacidades(folio);
                grdDatos2.DataBind();
            }

        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
        }
    }

    private void cargaGridBajas()
    {
        try
        {
            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {
                grdDatos3.DataSource = c.ObtenBajas(folio);
                grdDatos3.DataBind();
            }

        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
        }
    }

    private void cargaGridVaca()
    {
        try
        {
            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {
                grdDatos4.DataSource = c.ObtenVacaciones(folio);
                grdDatos4.DataBind();
            }

        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
        }
    }

    private void cargaGridMate()
    {
        try
        {
            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {
                grdDatos5.DataSource = c.ObtenMaterialesEmp(folio);
                grdDatos5.DataBind();
            }

        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
        }
    }

    private void cargaGridSalario()
    {
        try
        {
            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {
                grdDatos6.DataSource = c.ObtenSalarioEmp(folio);
                grdDatos6.DataBind();
            }

        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
        }
    }

    private void cargaGridPuestos()
    {
        try
        {
            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {
                grdDatos7.DataSource = c.ObtenPuestoEmp(folio);
                grdDatos7.DataBind();
            }

        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
        }
    }

    private void cargaGridCurso()
    {
        try
        {
            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {
                grdDatos8.DataSource = c.ObtenCapacitacionEmp(folio);
                grdDatos8.DataBind();
            }

        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
        }
    }

    private void cargaGridReconocimiento()
    {
        try
        {
            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {
                grdDatos9.DataSource = c.ObtenReconocimientoEmp(folio);
                grdDatos9.DataBind();
            }

        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
        }
    }

    protected void btnRegRetardos_Click(object sender, EventArgs e)
    {
        try
        {
            RetardoEmpleado reta = new RetardoEmpleado();

            fechaP = txtAnoRet.Text.Trim() + "/" +
            txtMesRet.Text.Trim() + "/" + txtDiaRet.Text.Trim();


            resul = DateTime.TryParse(fechaP, out fe);
            if (resul)
                reta.Dia = fe;
            else
                reta.Dia = DateTime.Now;

            reta.Minutos = int.Parse(txtMinutosRetardo.Text);
            reta.Comentarios = txtComentariosRetardos.Text;
            reta.IdEmpleado = folio;
            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {
                c.AgregaRetardo(reta);
            }
            cargaGridRetardos();
        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
        }
        finally
        {
            txtMinutosRetardo.Text = string.Empty;
            txtComentariosRetardos.Text = string.Empty;
        }
    }
    protected void btnRegistraInca_Click(object sender, EventArgs e)
    {
        try
        {
            IncapacidadEmpleado inca = new IncapacidadEmpleado();
            inca.IdEmpleado = folio;


            fechaP = txtAnoIncaIni.Text.Trim() + "/" +
            txtMesIncaIni.Text.Trim() + "/" + txtDiaIncaIni.Text.Trim();


            resul = DateTime.TryParse(fechaP, out fe);
            if (resul)
                inca.PeriodoInicial = fe;
            else
                inca.PeriodoInicial = DateTime.Now;


            fechaP = txtAnoIncaFin.Text.Trim() + "/" +
            txtMesIncaFin.Text.Trim() + "/" + txtDiaIncaFin.Text.Trim();

            resul = DateTime.TryParse(fechaP, out fe);
            if (resul)
                inca.PeriodoFinal = fe;
            else
                inca.PeriodoFinal = DateTime.Now;


            TimeSpan? tDias = inca.PeriodoInicial - inca.PeriodoFinal;

            inca.Dias = tDias.Value.Days;
            inca.IdTipoIncapacidad = int.Parse(ddTipo.SelectedItem.Value);
            inca.IdCaso = int.Parse(ddCaso.SelectedItem.Value);
            inca.Referencia = txtReferencia.Text;
            inca.SecuenciaIncapacidad = null; //txtSecuencia.Text;
            inca.Comentarios = txtComentariosIncapacida.Text;
            inca.Desde = DateTime.Now;

            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {
                c.AgregaIncapacidad(inca);
            }
            cargaGridIncapacidades();
        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
        }
        finally
        {
            txtReferencia.Text = string.Empty;
            //txtSecuencia.Text = string.Empty;
            txtComentariosIncapacida.Text = string.Empty;
        }
    }
    protected void btnRegistraBaja_Click(object sender, EventArgs e)
    {
        try
        {
            BajaEmpleado bja = new BajaEmpleado();
            bja.IdEmpleado = folio;


            fechaP = txtAnoBajaIni.Text.Trim() + "/" +
            txtMesBajaIni.Text.Trim() + "/" + txtDiaBajaIni.Text.Trim();


            resul = DateTime.TryParse(fechaP, out fe);
            if (resul)
                bja.FechaBaja = fe;
            else
                bja.FechaBaja = DateTime.Now;

            fechaP = txtAnoBajaFin.Text.Trim() + "/" +
            txtMesBajaFin.Text.Trim() + "/" + txtDiaBajaFin.Text.Trim();


            resul = DateTime.TryParse(fechaP, out fe);
            if (resul)
                bja.UltimoDiaTrabajo = fe;
            else
                bja.UltimoDiaTrabajo = DateTime.Now;

            bja.Comentarios = txtComentarioBaja.Text;
            bja.IdBaja = int.Parse(ddCausaBaja.SelectedItem.Value);

            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {
                c.AgregaBaja(bja);
            }
            cargaGridBajas();
        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
        }
        finally
        {
            txtComentarioBaja.Text = string.Empty;
        }
    }
    protected void btnRegitraVaca_Click(object sender, EventArgs e)
    {
        try
        {
            VacacionesEmpleado vca = new VacacionesEmpleado();
            vca.IdEmpleado = folio;


            fechaP = txtAnoVacaIni.Text.Trim() + "/" +
            txtMesVacaIni.Text.Trim() + "/" + txtDiaVacaIni.Text.Trim();


            resul = DateTime.TryParse(fechaP, out fe);
            if (resul)
                vca.PeriodoInicial = fe;
            else
                vca.PeriodoInicial = DateTime.Now;


            fechaP = txtAnoVacaFin.Text.Trim() + "/" +
            txtMesVacaFin.Text.Trim() + "/" + txtDiaVacaFin.Text.Trim();

            resul = DateTime.TryParse(fechaP, out fe);
            if (resul)
                vca.PeriodoFinal = fe;
            else
                vca.PeriodoFinal = DateTime.Now;


            TimeSpan? tDias = vca.PeriodoInicial - vca.PeriodoFinal;



            vca.Dias = tDias.Value.Days;
            if (ddPrimas.Text == "Si")
                vca.PagoPrima = 1;
            else
                vca.PagoPrima = 0;
            vca.SaldoVacaciones = int.Parse(txtSaldoVaca.Text);
            vca.VacacionesPeriodo = txtPeriodoVaca.Text;

            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {
                c.AgregaVacaciones(vca);
            }
            cargaGridVaca();
        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
        }
        finally
        {
            txtSaldoVaca.Text = string.Empty;
            txtPeriodoVaca.Text = string.Empty;

        }
    }
    protected void btnRegistraMate_Click(object sender, EventArgs e)
    {
        try
        {
            MaterialEmpleado mte = new MaterialEmpleado();
            mte.IdEmpleado = folio;

            
            fechaP = txtAnoEnt.Text.Trim() + "/" +
            txtMesEnt.Text.Trim() + "/" + txtDiaEnt.Text.Trim();


            resul = DateTime.TryParse(fechaP, out fe);
            if (resul)
                mte.FechaEntrega = fe;
            else
                mte.FechaEntrega = DateTime.Now;

            
            fechaP = txtAnoDev.Text.Trim() + "/" +
            txtMesEnt.Text.Trim() + "/" + txtDiaEnt.Text.Trim();


            resul = DateTime.TryParse(fechaP, out fe);
            if (resul)
                mte.FechaDevo = fe;
            else
                mte.FechaDevo = DateTime.Now;



            mte.IdMaterial = int.Parse(ddMateriales.SelectedItem.Value);
            if (ddEntregaRecep.Text == "Entrega")
                mte.Signo = 1;
            else
                mte.Signo = 0;
            if (txtCantidadMat.Text.Trim() == string.Empty)
                txtCantidadMat.Text = "0";
            mte.Cantidad = int.Parse(txtCantidadMat.Text);

            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {
                c.AgregaMaterialesEmpleado(mte);
            }
            cargaGridMate();
        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
        }
    }
    protected void btnRegistraSalario_Click(object sender, EventArgs e)
    {
        try
        {
            SalarioEmpleado sale = new SalarioEmpleado();
            sale.IdEmpleado = folio;


            fechaP = txtAnoInc.Text.Trim() + "/" +
            txtMesInc.Text.Trim() + "/" + txtDiaInc.Text.Trim();


            resul = DateTime.TryParse(fechaP, out fe);
            if (resul)
                sale.FechaIncremento = fe;
            else
                sale.FechaIncremento = DateTime.Now;


            sale.SueldoDiarioActual = decimal.Parse(txtSdoDiarioAct.Text);
            sale.SueldoMensualActual = decimal.Parse(txtSdoMenAct.Text);
            sale.SueldoDiarioNuevo = decimal.Parse(txtSdoDiaNvo.Text);
            sale.SueldoMensualNuevo = decimal.Parse(txtSdoMenNvo.Text);
            sale.Bonos = decimal.Parse(txtBonos.Text);
            sale.Prestaciones = decimal.Parse(txtPrestaciones.Text);
            sale.Vigente = true;


            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {
                c.AgregaSalarioEmpleado(sale);
                txtSalario.Text = sale.SueldoMensualNuevo.ToString();
                btnActualizar_Click(null, null);
            }
            cargaGridSalario();
        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
        }
        finally
        {
            txtSdoDiarioAct.Text = string.Empty;
            txtSdoMenAct.Text = string.Empty;
            txtSdoDiaNvo.Text = string.Empty;
            txtSdoMenNvo.Text = string.Empty;
            txtBonos.Text = string.Empty;
            txtPrestaciones.Text = string.Empty;
        }
    }
    protected void btnRegistraMovPer_Click(object sender, EventArgs e)
    {
        try
        {
            PuestoEmpleado psto = new PuestoEmpleado();
            psto.IdEmpleado = folio;


            fechaP = txtAnoVig.Text.Trim() + "/" +
            txtMesVig.Text.Trim() + "/" + txtDiaVig.Text.Trim();

            resul = DateTime.TryParse(fechaP, out fe);
            if (resul)
                psto.VigenteDesde = fe;
            else
                psto.VigenteDesde = DateTime.Now;

            psto.Puesto = txtPuestoMov.Text;
            psto.Planta = txtPlantaMov.Text;
            psto.Departamento = txtDepartamentoMov.Text;
            psto.JefeInmediato = txtJefeInmediatoMov.Text;
            psto.Turno = txtTurnoMov.Text;
            psto.CodigoGpoTrabajo = txtCodGpoTrabMov.Text;
            psto.NombreGpoTrabajo = txtNombreGpoTrabMov.Text;
            psto.CodigoDepto = txtCodigoDeptoMov.Text;
            psto.NombreDepto = txtNombreDeptoMov.Text;
            psto.CodigoProyecto = txtCodigoProyecto.Text;
            psto.NombreProyecto = txtNombreProyMov.Text;
            psto.CodigoPuesto = txtCodigoPuestoMov.Text;
            psto.NombreProyecto = txtNombreProyMov.Text;
            psto.Horario = txtHorarioMov.Text;
            psto.Vigente = true;

            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {
                c.AgregaPuestoEmpleado(psto);

                txtLabor.Text = txtPuestoMov.Text;
                txtPlanta.Text = txtPlantaMov.Text;
                txtDepto.Text = txtDepartamentoMov.Text;
                txtSupervisor.Text = txtJefeInmediatoMov.Text;
                txtTurno.Text = txtTurnoMov.Text;
                txtCodigoTrabajo.Text = txtCodGpoTrabMov.Text;
                txtCodigoDepto.Text = txtCodigoDeptoMov.Text;
                txtCodigoProyecto.Text = txtCodigoProyecto.Text; //duda
                txtJobPosCodEfe.Text = txtCodigoPuestoMov.Text;
                txtTurno.Text = txtTurnoMov.Text;
                btnActualizar_Click(null, null);
            }
            cargaGridPuestos();
        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
        }
        finally
        {
            txtPuestoMov.Text = string.Empty;
            txtPlantaMov.Text = string.Empty;
            txtDepartamentoMov.Text = string.Empty;
            txtJefeInmediatoMov.Text = string.Empty;
            txtTurnoMov.Text = string.Empty;
            txtCodGpoTrabMov.Text = string.Empty;
            txtNombreGpoTrabMov.Text = string.Empty;
            txtCodigoDeptoMov.Text = string.Empty;
            txtNombreDeptoMov.Text = string.Empty;
            //txtCodigoProyecto.Text = string.Empty;
            txtNombreProyMov.Text = string.Empty;
            txtCodigoPuestoMov.Text = string.Empty;
            txtNombreProyMov.Text = string.Empty;
            txtHorarioMov.Text = string.Empty;
        }
    }
    protected void btnRegistraCurso_Click(object sender, EventArgs e)
    {
        try
        {
            CapacitacionEmpleado capa = new CapacitacionEmpleado();
            capa.IdEmpleado = folio;


            fechaP = txtAnoCapaIni.Text.Trim() + "/" +
            txtMesCapaIni.Text.Trim() + "/" + txtDiaCapaIni.Text.Trim();

            resul = DateTime.TryParse(fechaP, out fe);
            if (resul)
                capa.FechaInicio = fe;
            else
                capa.FechaInicio = DateTime.Now;


            fechaP = txtAnoCapaFin.Text.Trim() + "/" +
            txtMesCapaFin.Text.Trim() + "/" + txtDiaCapaFin.Text.Trim();

            resul = DateTime.TryParse(fechaP, out fe);
            if (resul)
                capa.FechaFin = fe;
            else
                capa.FechaFin = DateTime.Now;


            capa.NombreCurso = txtNombreCurso.Text;
            capa.Tipo = txtTipoCurso.Text;
            capa.Institucion = txtInstitucionCurso.Text;
            capa.Instructor = txtInstructorCurso.Text;
            capa.Duracion = txtDuracionCurso.Text;
            capa.Acreditacion = txtAcreditacionCurso.Text;


            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {
                c.AgregaCapacitacionEmpleado(capa);
            }
            cargaGridCurso();
        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
        }
        finally
        {
            txtNombreCurso.Text = string.Empty;
            txtTipoCurso.Text = string.Empty;
            txtInstitucionCurso.Text = string.Empty;
            txtInstructorCurso.Text = string.Empty;
            txtDuracionCurso.Text = string.Empty;
            txtAcreditacionCurso.Text = string.Empty;
        }
    }
    protected void btnRegistraReco_Click(object sender, EventArgs e)
    {
        try
        {
            ReconocimientoEmpleado rco = new ReconocimientoEmpleado();
            rco.IdEmpleado = folio;


            fechaP = txtAnoReco.Text.Trim() + "/" +
            txtMesReco.Text.Trim() + "/" + txtDiaReco.Text.Trim();

            resul = DateTime.TryParse(fechaP, out fe);
            if (resul)
                rco.Fecha = fe;
            else
                rco.Fecha = DateTime.Now;


            rco.Evento = txtEventoReco.Text;
            rco.Institucion = txtInstituReco.Text;

            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {
                c.AgregaReconocimientoEmpleado(rco);
            }
            cargaGridReconocimiento();
        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
        }
        finally
        {
            txtEventoReco.Text = string.Empty;
            txtInstituReco.Text = string.Empty;
        }
    }
    protected void btnVer1_Click(object sender, EventArgs e)
    {
        if (Documentacion_0.Checked == true)
            Image2.ImageUrl = "~/MuestraImagenEmpleados.ashx?id=" + emp.IdEmpleado.ToString() + "&campo=Fotos";
    }
    protected void btnVer2_Click(object sender, EventArgs e)
    {
        if (Documentacion_1.Checked == true)
            Image3.ImageUrl = "~/MuestraImagenEmpleados.ashx?id=" + emp.IdEmpleado.ToString() + "&campo=Domicilio";
    }
    protected void btnVer3_Click(object sender, EventArgs e)
    {
        if (Documentacion_2.Checked == true)
            Image4.ImageUrl = "~/MuestraImagenEmpleados.ashx?id=" + emp.IdEmpleado.ToString() + "&campo=Estudios";
    }
    protected void btnVer4_Click(object sender, EventArgs e)
    {
        if (Documentacion_3.Checked == true)
            Image5.ImageUrl = "~/MuestraImagenEmpleados.ashx?id=" + emp.IdEmpleado.ToString() + "&campo=Ife";
    }
    protected void btnVer5_Click(object sender, EventArgs e)
    {
        if (Documentacion_4.Checked == true)
            Image6.ImageUrl = "~/MuestraImagenEmpleados.ashx?id=" + emp.IdEmpleado.ToString() + "&campo=Imss";
    }
    protected void btnVer6_Click(object sender, EventArgs e)
    {
        if (Documentacion_5.Checked == true)
            Image7.ImageUrl = "~/MuestraImagenEmpleados.ashx?id=" + emp.IdEmpleado.ToString() + "&campo=Acta";
    }
    protected void btnVer7_Click(object sender, EventArgs e)
    {
        if (Documentacion_6.Checked == true)
            Image8.ImageUrl = "~/MuestraImagenEmpleados.ashx?id=" + emp.IdEmpleado.ToString() + "&campo=Recomendacion";
    }
    protected void btnVer8_Click(object sender, EventArgs e)
    {
        if (Documentacion_7.Checked == true)
            Image9.ImageUrl = "~/MuestraImagenEmpleados.ashx?id=" + emp.IdEmpleado.ToString() + "&campo=Policia";
    }
    protected void btnVer9_Click(object sender, EventArgs e)
    {
        if (Documentacion_8.Checked == true)
            Image10.ImageUrl = "~/MuestraImagenEmpleados.ashx?id=" + emp.IdEmpleado.ToString() + "&campo=Curp";
    }
    protected void grdDatos_SelectedIndexChanged(object sender, EventArgs e)
    {        
        HiddenField2.Value = grdDatos.SelectedValue.ToString();
    }
    protected void grdDatos1_SelectedIndexChanged(object sender, EventArgs e)
    {
        HiddenField3.Value = grdDatos1.SelectedValue.ToString();
    }
    protected void grdDatos2_SelectedIndexChanged(object sender, EventArgs e)
    {
        HiddenField4.Value = grdDatos2.SelectedValue.ToString();
    }
    protected void grdDatos3_SelectedIndexChanged(object sender, EventArgs e)
    {
        HiddenField5.Value = grdDatos3.SelectedValue.ToString();
    }
    protected void grdDatos4_SelectedIndexChanged(object sender, EventArgs e)
    {
        HiddenField6.Value = grdDatos4.SelectedValue.ToString();
    }
    protected void grdDatos5_SelectedIndexChanged(object sender, EventArgs e)
    {
        HiddenField7.Value = grdDatos5.SelectedValue.ToString();
    }
    protected void grdDatos6_SelectedIndexChanged(object sender, EventArgs e)
    {
        HiddenField8.Value = grdDatos6.SelectedValue.ToString();
    }
    protected void grdDatos7_SelectedIndexChanged(object sender, EventArgs e)
    {
        HiddenField9.Value = grdDatos7.SelectedValue.ToString();
    }
    protected void grdDatos8_SelectedIndexChanged(object sender, EventArgs e)
    {
        HiddenField10.Value = grdDatos8.SelectedValue.ToString();
    }
    protected void grdDatos9_SelectedIndexChanged(object sender, EventArgs e)
    {
        HiddenField11.Value = grdDatos9.SelectedValue.ToString();
    }
    protected void btnEliminarAus_Click(object sender, EventArgs e)
    {
        if (HiddenField2.Value.Trim() == string.Empty)
            return;
        try
        {
            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {
                c.EliminaAusencia(int.Parse(HiddenField2.Value));
            }
            cargaGridAusencias();
        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
        }

    }
    protected void btnEliminarRet_Click(object sender, EventArgs e)
    {
        if (HiddenField3.Value.Trim() == string.Empty)
            return;
        try
        {
            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {
                c.EliminaRetardo(int.Parse(HiddenField3.Value));                
            }
            cargaGridRetardos();         
        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
        }
    }
    protected void btnEliminarInca_Click(object sender, EventArgs e)
    {
        if (HiddenField4.Value.Trim() == string.Empty)
            return;
        try
        {
            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {                
                c.EliminaIncapacidad(int.Parse(HiddenField4.Value));
            }
            cargaGridIncapacidades();            
        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
        }
    }
    protected void btnEliminarBaja_Click(object sender, EventArgs e)
    {
        if (HiddenField5.Value.Trim() == string.Empty)
            return;
        try
        {
            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {
                c.EliminaBaja(int.Parse(HiddenField5.Value));
            }
            cargaGridBajas();            
        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
        }
    }
    protected void btnEliminaVaca_Click(object sender, EventArgs e)
    {
        if (HiddenField6.Value.Trim() == string.Empty)
            return;
        try
        {
            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {                
                c.EliminaVaciones(int.Parse(HiddenField6.Value));
            }
            cargaGridVaca();            
        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
        }
    }
    protected void btnEliminaMate_Click(object sender, EventArgs e)
    {
        if (HiddenField7.Value.Trim() == string.Empty)
            return;
        try
        {
            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {
                c.EliminaMaterialesEmpleado(int.Parse(HiddenField7.Value));
            }
            cargaGridMate();
        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
        }
    }
    protected void btnEliminaSalario_Click(object sender, EventArgs e)
    {
        if (HiddenField8.Value.Trim() == string.Empty)
            return;
        try
        {
            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {
                c.EliminaSalarioEmpleado(int.Parse(HiddenField8.Value));
            }
            cargaGridSalario();            
        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
        }
    }
    protected void btnEliminaMovPer_Click(object sender, EventArgs e)
    {
        if (HiddenField9.Value.Trim() == string.Empty)
            return;
        try
        {
            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {
                c.EliminaPuestoEmpleado(int.Parse(HiddenField9.Value));
                
            }
            cargaGridPuestos();            
        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
        }
    }
    protected void btnEliminaCurso_Click(object sender, EventArgs e)
    {
        if (HiddenField10.Value.Trim() == string.Empty)
            return;
        try
        {
            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {
                c.EliminaCapacitacionEmpleado(int.Parse(HiddenField10.Value));                

            }
            cargaGridCurso();
        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
        }
    }
    protected void btnEliminaReco_Click(object sender, EventArgs e)
    {
        if (HiddenField11.Value.Trim() == string.Empty)
            return;
        try
        {
            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {
                c.EliminaReconocimientoEmpleado(int.Parse(HiddenField11.Value));

            }
            cargaGridReconocimiento();
        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
        }
    }
}